package info.rongtong.service.basic;

import java.io.Serializable;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public interface BasicServiceInter {

	/**
	 * 根据id查询 一个对象
	 * @param <T>
	 * @param clazz
	 * @param id
	 * @return
	 */
	public <T> T findObjectById(Class<T> clazz,Serializable id);

	/**
	 * 持久化一个对象
	 * @param object
	 */
	public void saveOrUpdate(Object object);

	/**
	 * 不带分布的查询
	 * @param <T>
	 * @param clazz
	 * @param hql
	 * @param parameters
	 * @return
	 */
	public <T> List<T> executeQuery(Class<T> clazz,String hql,Object[] parameters);

	/**
	 * 带分页的查询
	 * @param <T>
	 * @param clazz
	 * @param hql
	 * @param parameters
	 * @param pageNow
	 * @param pageSize
	 * @return
	 */
	public <T> List<T> executeQuery(Class<T> clazz,String hql,Object[] parameters,int pageNow,int pageSize);

	/**
	 * 查询唯一记录
	 * @param hql
	 * @param parameters
	 * @return
	 */
	public Object uniqueResult(String hql,Object[] parameters);
	
	/**
	 * 批量更新
	 * @param hql
	 * @param obj
	 */
	public void exeuteUpdate(String hql,Object[] obj);
	
	/**
	 * 查询总页数
	 * @param hql
	 * @param pageSize
	 * @return
	 */
	public int queryPageCount(String hql,int pageSize);
	
	/**
	 * 删除一个对象
	 * @param clazz
	 * @param id
	 */
	public <T> void delObjectById(Class<T> clazz,java.io.Serializable id);

}
